<?php

namespace Lib;

use Lib\src\ApiResponse;

/**
 * Created by PhpStorm.
 * User: Se1per
 * Date: 2023/5/25
 * Time: 23:41
 */
class BaseController
{
    use ApiResponse;

    /**
     * 获取所有请求参数（包括 GET 和 POST）
     *
     * @return array 包含所有请求参数的数组
     */
    function get_all_params(): array
    {
        $params = array();// 将 GET 参数加入数组
        foreach ($_GET as $key => $value) {
            $params[$key] = $value;
        }

        // 将 POST 参数加入数组
        foreach ($_POST as $key => $value) {
            $params[$key] = $value;
        }

        return $params;
    }

    public function makePassWord($pass, $salt): string
    {
        return md5($pass . $salt . '//^^');
    }



    /**
     * 截取随机数
     * @param int $number 随机数长度
     * @param null $array 自定义随机参数
     * @param null $keStr 自定义填充随机数头部
     * @return string 字符串类型的随机数包含自定义参数
     */
    public static function getARandLetter(int $number = 1, $array = null, $keStr = null): string
    {

        if ($number == 0) return ''; // 如果 $number 等于 0 就返回空字符串

        if (!$letterArr = ($array ?: [   // 如果数组未定义, 则设置默认数组作为候选项
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', "Q",
            "R", "S", "T", "U", "V", "W", "X", "Y", 'Z',
            'a', 'b', 'c', 'd', 'e', 'f', 'g',
            "h", "i", "j", "k", "l", "m", "n",
            "o", "p", "q", "r", "s", "t",
            "u", "v", "w", "x", "y", "z",
            1, 2, 3, 4, 5, 6, 7, 8, 9, '0'
        ])
        ) return '';

        if (is_string($array)) $letterArr = str_split($array);

        $randString = '';
        $totalLength = abs($number); // 计算所需的总长度
        if ($keStr !== null) {  // 如果有自定义字符串，添加到随机字符串末尾
            $totalLength = $totalLength - strlen($keStr) ;
            $randString .= $keStr;
        }

        for ($i = 0; $i < $totalLength; $i++) {
            $randString .= $letterArr[array_rand($letterArr)];
        }

        return $randString;

    }
}